<?php

class Application_Model_Contadores extends Sgit_Model
{  
    protected $_name = 'contadores';
    protected $_primary = 'id';


    public function getContador($id)
    {

        return $this->getContadores(array(),$id);

    }



    public function getContadores($values,$id=null)
    {
        
        
        $select=$this->getAdapter()->select();
        $select->from(array('contadores'));

                 
        if (!is_null($id))
        {
            $select->where("contadores.id= ?", $id);
        }else{
            if($values['id_zona'])
                $select->where("contadores.id_zona= ?", $values['id_zona']);
            if($values['id_proyecto'])
                $select->where("contadores.id_proyecto= ?", $values['id_proyecto']);
        }   
            
            
        $select->joinLeft('centros_continuidad', 'centros_continuidad.id = contadores.id_cc', array('cc'=>'nombre'))
            ->joinLeft('salas', 'salas.id = contadores.id_sala', array('sala'=>'nombre'));

        $rows = $this->getAdapter()->fetchAll($select);
        
        $lecturas=new Application_Model_Lecturas();
        $modelo=new Sgit_Form_Element_Select_ContadorModelo('modelo');
        
        
        foreach($rows as $k => $v ){
            
            $rows[$k]['modelo']=$modelo->getMultiOption($v['tipo']);
            $rows[$k]['consumo']=$lecturas->getConsumo($v['id']);
            $rows[$k]['potencia']=$rows[$k]['consumo']['potencia'];
            $rows[$k]['potencia_anterior']=$rows[$k]['consumo']['potencia_anterior'];
        }

        
        
        if (is_null($id))
            return $rows;
        else
            return $rows[0];

    }




    
    /**
     * Application_Model_Contadores::GetNextContador()
     * 21000 posibles contadores
     * @return
     */
    public function GetNextContador($id_zona){
        
        $select=$this->getAdapter()->select();
        $select->from(array('contadores'),  array('codigo'))
            ->where('id_zona = ?', $id_zona)
            ->order("codigo DESC")
            ->limit(1);
            

        $codigo = $this->getAdapter()->fetchOne($select);
        
        if(empty($codigo)) return 'A001';

        $letras=array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','R','S','T','U','V','W','Y','Z');
 
        $letra=Zend_Filter::filterStatic($codigo, 'Alpha');
        $digito=(int)Zend_Filter::filterStatic($codigo, 'Digits');
        
        
        if($digito==999){
            $digito=1;
            $index_letra=array_search($letra,$letras);
            $letra=$letras[$index_letra+1];
            if($index_letra >= count($letras)-1){
               //si pasamos la Z
            }
        }
        else {
            $digito++;
        }

        $num=$letra.str_pad($digito, 3, "0", STR_PAD_LEFT);

        return $num;
    }
    
    
    
   public function getLectura($id,$mes,$anio)
   {
        
   }
   
    
   public function getConsumo($id,$mes,$anio)
   {
        
   }
    
    
    
}  




